package com.beiding.mpTimer;

import java.util.Map;

/**
 * 提供有关时间轴的操作
 */
public interface TimerShaftService {

    //获取时间轴持有者的id
    String getTimerShaftHolderId();

    //设置时间轴持有者id
    void setTimerShaftHolderId(String id);

    //更新时间轴持有者最后一个心跳时间戳
    void updateLastHeartbeatTimestamp(long timeMillis);

    //获取最后一次心跳时间戳
    long getLastHeartbeatTimestamp();

    //获取已经过时的任务
    Map<Long, Iterable<String>> getOverdueTasks(long time);

    //获取准时发生的任务
    Iterable<String> getOnTimeTasks(long time);

    //获取步长
    long getStep();

    //获取心跳间隔
    long getHeartbeatInterval();

    //设置心跳间隔
    void setHeartbeatInterval(long heartbeatInterval);

    //设置步长
    void setStep(long step);

    //持久化一个任务
    void permanent(TaskPersistence persistence);

    //移除一个对象
    Object remove(String tackId);

    //根绝id获取一个任务
    TaskPersistence getTask(String id);


}
